This invention relates to a communication control devices. More specifically, this invention relates to a communication control device for transferring data among devices such as computers and other communication control devices whose internal buses, such as I/O buses, differ in transfer speed.
Data packets sent out from a transmitting computer are received by a receiving computer through a network. Before sending out such data, the transmitting computer processes the data through a protocol and adds control data, to produce packets. The packets are sent to a network adapter through internal buses (a host bus and an I/O bus) of the transmitting computer and sent out to the network. The packets arrived at a network adapter corresponding to the receiving computer are stored into the memory of the receiving computer via the internal buses such as the I/O bus and the host bus of the receiving computer. Thereafter, the receiving computer processes the data packets in various ways, for example, to extract the data.
To perform communication efficiently between computers, sometimes data packets are sent continuously without an interval between packets. In this case, if data packets are sent out at a speed beyond the capacity of a receiving computer, the receiving computer fails to receive the packets and the data are lost. To prevent such loss of data, it is necessary for a transmitting computer to control its transfer rate. A computer""s processing capacity of received data is mainly determined by the transfer rates of its internal buses, the processing speed of its processor, and the speed of writing data into and reading data from its memory.
In the case of the TCP (Transmission Control Protocol) which is commonly used in the Internet, the transferable data quantity of a transmitting computer is determined based on the available data butter capacity of a receiving computer. With the technique of our invention, data loss due to the shortage of available buffer capacity in a receiving computer can be prevented.
Because the transfer rates of internal buses such as I/O buses and host buses of computers have been higher than the data transfer rates of networks (network transfer rates), the former rates have not usually affected the communication efficiency of such networks. In recent years, however, the communication speeds of networks are increasing, and many networks have communication speeds higher than the transfer rates of internal buses of computers. In a network, if the transfer rate of internal buses of a receiving computer is lower than that of a transmitting computer, the capacity of the receiving computer for storing the data arrived at its corresponding network adapter into its memory through its internal buses can be a bottleneck of the data transfer among the computers through such a network.
In the case of the method of determining the transferable data quantity based on the available data buffer capacity of a receiving computer, if a transmitting computer sends Out data continuously, next data may arrive at the network adapter of a receiving computer before it finishes storing the previous data arrived at the adapter into its memory through its internal buses. If it happens, the receiving computer fails to receive data and they are lost. Lost data have to be resent, which reduces the communication efficiency between computers through networks.
This invention provides a communication control device which prevents data loss caused by failure in receiving data on the reception side. It thereby enables high communication efficiency among devices such as computers and communication control devices with internal buses having different transfer rates and processing speed.
In a first embodiment, a communication control device includes a connection control table which holds connection data for communication between the communication control device and other communication control devices on the reception side and identifiers of the other communication control devices, and a receiver control table which holds data including the identifiers, the internal bus speeds of the other communication control devices, and next transmittable times. It also includes a connection control means which, upon the establishment of a connection with one of the other communication control devices, receives, from the communication control device on the reception side, a connection establishment response which includes the internal bus speed of the communication control device, and a table control means which receives a notice of establishment of a connection from the connection control means, records data in the connection control table, and records the data including the internal bus speed received by the connection control means into the receiver control table if the receiver control table has no data corresponding to the identifier of the communication control device. Finally, the device includes a transmitting queue-choosing means which chooses the connection number and the receiver identifier of the next connection from the connection control table made by the table control means, acquires the next transmittable time for the chosen receiver identifier from the receiver control table made by the table control means, compares the next transmittable time and the current time, and chooses a transmitting queue for storing data to be transmitted in accordance with the result of the comparison.
According to a second embodiment of the invention, the communication control device includes (i) a means for retaining the transfer rate of the I/O bus to which the communication control device is connected, (ii) a means for choosing one transmitting queue for transmission of data from a number of transmitting queues, (iii) a memory for storing a connection control table holding corresponding relation between combinations of transmitting and receiving queues, each combination consisting of a transmitting queue and a receiving queue, and other communication control devices and (iv) a memory for storing a receiver control table which holds the transfer rates of the I/O buses to which the other communication control devices are connected and other data of the other communication control devices. The communication control device is used in a computer system where the processor and the memory are connected to a host bus, the communication control device is connected to an I/O bus, a bus bridge is provided between the host bus and the I/O bus, and data are transferred between the communication control device and the memory by transferring the data between the I/O bus and the host bus through the bus bridge. The device also includes a plurality of transmitting queues for storing data to be transmitted and a plurality of receiving queues for storing received data; the data stored in a transmitting queue can be transmitted to a receiving queue of any receiving computer, and a means is provided for specifying the combinations of transmitting and receiving queues uniquely.
In a third embodiment of the invention, a communication control device comprising (i) a means for renewing the connection control table and the receiver control table and (ii) a means for making and deleting combinations of transmitting queues and receiving queues.
In a fourth embodiment, by choosing a transmitting queue for data transmission based on the transfer rate of the I/O bus to which another communication control device is connected on the reception side, an interval is inserted between data packets as they are sent.
In a further embodiment, by choosing a transmitting queue for data transmission based on the transfer rate of the I/O bus to which another communication control device is connected on the reception side, an interval is inserted between the transmission of a data packet and the transmission of the next data packet, with the interval being determined by the length of the former packet.